golang常用库

您所在的位置:网站首页 golang 常用库 golang常用库

golang常用库

2023-03-24 22:29| 来源: 网络整理| 查看: 265

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

http

我们经常使用框架,其实很多框架都是在最简单的http服务上做扩展的的,基本上都是遵循http协议,将底层的封装好,我们使用web框架只要写业务逻辑,填代码就可以了,不用关心底层实现。Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现,我们接着就来看一下在golang中常用的http组件。

客户端 resp, err := http.Get("http://www.baidu.com/") resp, err := http.Post("http://www.baidu.com/post", "image/jpeg", &buf) resp, err := http.PostForm("http://www.baidu.com/form", url.Values{"key": {"Value"}, "id": {"123"}}) if err != nil { // handle error } //使用完response后必须关闭回复的主体 defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) 复制代码

使用完response后必须关闭回复的主体。

带参数的请求

带参数get请求

apiUrl := "http://127.0.0.1:9090/get" // URL param data := url.Values{} data.Set("name", "a") data.Set("age", "18") u, err := url.ParseRequestURI(apiUrl) if err != nil { fmt.Printf("parse url requestUrl failed,err:%v\n", err) } u.RawQuery = data.Encode() // URL encode fmt.Println(u.String()) resp, err := http.Get(u.String()) if err != nil { fmt.Println("post failed, err:%v\n", err) return } 复制代码

带参数post请求

// 表单数据 //contentType := "application/x-www-form-urlencoded" //data := "name=jm&age=20" // json contentType := "application/json" data := `{"name":"jm","age":20}` resp, err := http.Post(url, contentType, strings.NewReader(data)) 复制代码

看完以下的编写方式,我们觉得应该有更舒适第三方http库,只需要:

http.Get(url,json对象参数|结构体参数) http.Post(url,options,data) //options负责设置http头等信息,data是参数json对象或结构体 复制代码 服务端 // http server func sayHello(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello world") } func main() { http.HandleFunc("/", sayHello) err := http.ListenAndServe(":9527", nil) if err != nil { fmt.Printf("http server failed, err:%v\n", err) return } } //自定义server s := &http.Server{ Addr: ":9527", Handler: myHandler, ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3